07 使用 RAID 与 LVM 磁盘阵列技术
- 各个常用 RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)技术方案的特性,通过实际部署 RAID 10、RAID 5+ 备份盘 等方案来更直观地查看 RAID 的强大效果,以便进一步满足生产环境对硬盘设备的 IO 读写速度和数据冗余备份机制的需求。
- 同时,考虑到用户可能会动态调整存储资源,介绍 LVM(Logical Volume Manager,逻辑卷管理器)的部署、扩容、缩小、快照以及卸载删除的相关知识。
RAID 磁盘冗余阵列
- 1988 年,美国加利福尼亚大学伯克利分校首次提出并定义了 RAID 技术的概念。
- RAID 技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。
- RAID 技术确实具有非常好的数据冗余备份功能,但是它也相应地提高了成本支出。就像原本我们只有一个电话本,但是为了避免遗失,我们把联系人号码信息写成了两份,自然要为此多买一个电话本,这也就相应地提升了成本支出。
- RAID 技术的设计初衷是减少因为采购硬盘设备带来的费用支出,但是与数据本身的价值相比较,现代企业更看重的则是 RAID 技术所具备的冗余备份机制以及带来的硬盘吞吐量的提升。
- 也就是说,RAID 不仅降低了硬盘设备损坏后丢失数据的几率,还提升了硬盘设备的读写速度,所以它在绝大多数运营商或大中型企业中得到了广泛部署和应用。
RAID 技术
- 独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),简称磁盘阵列。利用虚拟化储存技术把多个硬盘组合起来,成为一个或多个硬盘阵列组,目的为提升效能或资料冗余,或是两者同时提升。
- 在运作中,取决于 RAID 层级不同,资料会以多种模式分散于各个硬盘,RAID 层级的命名会以 RAID 开头并带数字,例如:RAID 0、RAID 1、RAID 5、RAID 01、RAID 10、RAID 50、RAID 60。每种等级都有其理论上的优缺点,不同的等级在两个目标间取得平衡,分别是增加资料可靠性以及增加存储器(群)读写效能。
RAID 0/1/5/10 方案技术对比
- 出于成本和技术方面的考虑,需要针对不同的需求在数据可靠性及读写性能上做出权衡,制定出满足各自需求的不同方案。
- 其中
n代表硬盘总数。
| RAID 级别 | 最少硬盘 | 可用容量 | 读写性能 | 安全性 | 特点 |
|---|---|---|---|---|---|
| 0 | 2 | n |
n |
低 | 追求最大容量和速度,任何一块盘损坏,数据全部异常。 |
| 1 | 2 | n/2 |
n |
高 | 追求最大安全性,只要阵列组中有一块硬盘可用,数据不受影响。 |
| 5 | 3 | n-1 |
n-1 |
中 | 在控制成本的前提下,追求硬盘的最大容量、速度及安全性,允许有一块硬盘异常,数据不受影响。 |
| 10 | 4 | n/2 |
n/2 |
高 | 综合 RAID1 和 RAID0 的优点,追求硬盘的速度和安全性,允许有一半硬盘异常(不可同组),数据不受影响。 |
RAID 0 技术
-
把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入各个物理硬盘中。
-
通俗来说,RAID 0 技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力。
-
尽管 RAID 0 技术提升了硬盘设备的读写速度,但它是将数据依次写入到各个物理硬盘中。也就是说,它的数据是分开存放的,其中任何一块硬盘发生故障都会损坏整个系统的数据。
-
RAID 0 技术示意图:

RAID 1 技术
-
如果生产环境对硬盘设备的读写速度没有要求,而是希望增加数据的安全性时,就需要用到 RAID 1 技术了。
-
RAID 1 技术是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。
-
考虑到在进行写入操作时因硬盘切换带来的开销,因此 RAID 1 的速度会比 RAID 0 有微弱地降低。但在读取数据的时候,操作系统可以分别从两块硬盘中读取信息,因此理论读取速度的峰值可以是硬盘数量的倍数。另外,平时只要保证有一块硬盘稳定运行,数据就不会出现损坏的情况,可靠性较高。
-
RAID 1 技术示意图:

RAID 5 技术
-
把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID 5 磁盘阵列中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上。
-
RAID5 技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID 5 磁盘阵列中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上。
-
Parity 部分存放的就是数据的奇偶校验信息。换句话说,就是 RAID 5 技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。RAID 这样的技术特性 "妥协" 地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。
-
RAID 5 最少由 3 块硬盘组成,使用的是硬盘切割(Disk Striping)技术。
-
RAID 5 技术示意图:

RAID 10 技术
-
RAID 10 技术是 RAID 1+RAID 0 技术的一个 "组合体" 。需要至少 4 块硬盘来组建,其中先分别两两制作成 RAID 1 磁盘阵列,以保证数据的安全性;然后再对两个 RAID 1 磁盘阵列实施 RAID 0 技术,进一步提高硬盘设备的读写速度。
-
RAID 10 技术需要至少 4 块硬盘来组建,其中先分别两两制作成 RAID 1 磁盘阵列,以保证数据的安全性;然后再对两个 RAID 1 磁盘阵列实施 RAID 0 技术,进一步提高硬盘设备的读写速度。
-
由于 RAID 10 技术继承了 RAID 0 的高读写速度和 RAID 1 的数据安全性,在不考虑成本的情况下 RAID 10 的性能也超过了 RAID 5,因此当前成为广泛使用的一种存储技术。
-
RAID 10 技术示意图:

由于 RAID 10 是由 RAID 1 和 RAID 0 组成的,因此正确的叫法是 "RAID 一零 ",而不是 "RAID 十 "。
- RAID 10 是先对信息进行分割,然后再两两一组制作镜像。也就是先将 RAID 1 作为最低级别的组合,然后再使用 RAID 0 技术将 RAID 1 磁盘阵列组合到一起,将它们视为 "一整块" 硬盘。而 RAID 01 则相反,它是先将硬盘分为两组,然后使用 RAID 0 作为最低级别的组合,再将这两组 RAID 0 硬盘通过 RAID 1 技术组合到一起。
- 在 RAID 10 中,任何一块硬盘损坏都不会影响到数据安全性,其余硬盘均会正常运作。但在 RAID 01 中,只要有任何一块硬盘损坏,最低级别的 RAID 0 磁盘阵列马上会停止运作,这可能造成严重隐患。所以 RAID 10 远比 RAID 01 常见,很多主板甚至不支持 RAID 01。
部署磁盘阵列
- 在虚拟机中添加 4 块硬盘设备来制作一个 RAID 10 磁盘阵列(记得硬盘要用 SATA 接口的类型,大小默认 20GB 就可以)。

- 一定要记得在关闭系统之后,再在虚拟机中添加硬盘设备,否则可能会因为计算机架构的不同而导致虚拟机系统无法识别新添加的硬盘设备。
- 当前,生产环境中用到的服务器一般都配备 RAID 阵列卡,尽管服务器的价格越来越便宜,但是我们没有必要为了做一个实验而去单独购买一台服务器,而是可以学会使用
mdadm命令在 Linux 系统中创建和管理软件 RAID 磁盘阵列,而且它涉及的理论知识和操作过程与生产环境中的完全一致。
mdadm
-
mdadm命令用于创建、调整、监控和管理 RAID 设备,英文全称为multiple devices admin,语法格式为mdadm 参数 硬盘名称。 -
mdadm命令的常用参数和作用:参数 作用 -a检测设备名称 -n指定设备数量 -l指定 RAID 级别 -C创建 -v显示过程 -f模拟设备损坏 -r移除设备 -Q查看摘要信息 -D查看详细信息 -S停止 RAID 磁盘阵列
损坏磁盘阵列及修复
- 在确认有一块物理硬盘设备出现损坏而不能再继续正常使用后,应该使用
mdadm命令将其移除,然后查看 RAID 磁盘阵列的状态。 - 在 RAID 10 级别的磁盘阵列中,当 RAID 1 磁盘阵列中存在一个故障盘时并不影响 RAID 10 磁盘阵列的使用。
- 当购买了新的硬盘设备后再使用
mdadm命令予以替换即可,在此期间可以在/RAID目录中正常地创建或删除文件。 - 由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到 RAID 磁盘阵列中。
磁盘阵列 + 备份盘
- RAID 10 磁盘阵列中最多允许 50% 的硬盘设备发生故障,但是存在这样一种极端情况,即同一 RAID 1 磁盘阵列中的硬盘设备若全部损坏,也会导致数据丢失。
- 可以使用 RAID 备份盘技术来预防这类事故。该技术的核心理念就是准备一块足够大的硬盘,这块硬盘平时处于闲置状态,一旦 RAID 磁盘阵列中有硬盘出现故障后则会马上自动顶替上去。
- 为了避免多个实验之间相互发生冲突,我们需要保证每个实验的相对独立性,为此需要大家自行将虚拟机还原到初始状态。
- 另外,由于刚才已经演示了 RAID 10 磁盘阵列的部署方法,现在来看一下 RAID 5 的部署效果。部署 RAID 5 磁盘阵列时,至少需要用到 3 块硬盘,还需要再加一块备份硬盘(也叫热备盘),所以总计需要在虚拟机中模拟 4 块硬盘设备。
删除磁盘阵列
- 需要将所有的磁盘都设置成停用状态
- 然后再逐一移除出去。
- 将所有的硬盘都移除后,再来查看磁盘阵列组的状态
- 继续停用整个 RAID 磁盘阵列,工作就彻底完成了
在有一些老版本的服务器中,在使用 --stop 参数后依然会保留设备文件。这很明显是没有处理干净,这时再执行一下 mdadm --remove /dev/md0 命令即可。
LVM 逻辑卷管理器
- LVM 是 Linux 系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。
- 尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。
- LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。
- 这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。
LVM 核心概念
- 物理卷:物理卷处于 LVM 中的最底层,可以将其理解为物理硬盘、硬盘分区或者 RAID 磁盘阵列。
- 卷组:卷组建立在物理卷之上,一个卷组能够包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。
- 逻辑卷:逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。
逻辑卷管理器的技术结构

逻辑卷管理器使用流程图
- 在日常的使用中,如果卷组(VG)的剩余容量不足,可以随时将新的物理卷(PV)加入到里面,进行不断地扩容。

部署逻辑卷
常用的部署命令
常用的 LVM 部署命令
| 功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
|---|---|---|---|
| 扫描 | pvscan |
vgscan |
lvscan |
| 建立 | pvcreate |
vgcreate |
lvcreate |
| 显示 | pvdisplay |
vgdisplay |
lvdisplay |
| 删除 | pvremove |
vgremove |
lvremove |
| 扩展 | vgextend |
lvextend |
|
| 缩小 | vgreduce |
lvreduce |
实验步骤
- 在虚拟机中添加两块新的硬盘设备,让新添加的两块硬盘设备支持 LVM 技术。
- 把两块硬盘设备加入到 storage 卷组中,然后查看卷组的状态。
- 切割出一个约为 150MB 的逻辑卷设备。需要注意切割单位的问题。
- 把生成好的逻辑卷进行格式化,然后挂载使用。
扩容逻辑卷
- 把上一个实验中的逻辑卷 vo 扩展至 290MB。
- 检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失。一般情况下没有报错,均为正常情况。
- 重置设备在系统中的容量。刚刚是对 LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步。
- 重新挂载硬盘设备并查看挂载状态。
缩小逻辑卷
- 检查文件系统的完整性。
- 通知系统内核将逻辑卷 vo 的容量减小到 120MB。
- 将 LV(逻辑卷)的容量修改为 120MB。
- 重新挂载文件系统并查看系统状态。
逻辑卷快照
LVM 的快照卷功能有两个特点:
- 快照卷的容量必须等同于逻辑卷的容量;
- 快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。
- 使用
-s参数生成一个快照卷,使用-L参数指定切割的大小,需要与要做快照的设备容量保持一致。另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照操作,稍后数据也会还原到这个相应的设备上。 - 在逻辑卷所挂载的目录中创建一个 100MB 的垃圾文件,然后再查看快照卷的状态。可以发现存储空间的占用量上升了。
- 为了校验快照卷的效果,需要对逻辑卷进行快照还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载。
- 快照卷会被自动删除掉,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的 100MB 的垃圾文件也被清除了。
删除逻辑卷
- 取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。
- 删除逻辑卷设备,需要输入
y来确认操作。 - 删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。
- 删除物理卷设备。
总结
RAID 技术可以解决存储设备的读写速度问题及数据的冗余备份问题。
RAID 0 没有数据冗余功能,因此 RAID 5 更安全。
最多允许 5 块硬盘设备中的 3 块设备同时损坏。
最底层的是物理卷,然后再通过物理卷组成卷组。
扩容和缩容操作都需要先取消逻辑卷与目录的挂载关联;扩容操作是先扩容后检查文件系统完整性,而缩容操作为了保证数据的安全,需要先检查文件系统完整性再缩容。
只可使用一次,而且使用后即自动删除。
依次移除逻辑卷、卷组和物理卷。